(function($) {

    var contentContainerId = "mainDiv"; // 默认的内容显示的容器ID
    var defaultUrlStr = "/home/welcome"; // 默认的跳转url字符串

    var route = {
        /**
         * 初始化方法
         * 检查location的hash值，如果有值则直接触发onhashchange方法跳转到对应的url中，如果没有值则跳转到默认的url
         */
        init: function() {
            var hash = getHash();
            if (hash != "") {
                window.onhashchange();
            } else {
                changeHash(defaultUrlStr);
            }
        },

        /**
         * 跳转的方法
         * @param urlStr 请求地址的url串
         */
        go: function(urlStr) {
            changeHash(urlStr);
        },

        getDefaultUrlStr: function() {
            return defaultUrlStr;
        },

        getHash: function() {
            return getHash();
        }
    };

    window.onhashchange = function() {
        var hash = getHash();

        var href = getUrlByHash(hash) + "?_=" + new Date().getTime();
        var params = getParamsByHash(hash);

        $.ajax({
            url: href,
            data: params,
            cache: false,
            dataType: "html",
            type: "get",
            beforeSend: function() {},
            error: function() {},
            success: function(data) {
                $("#" + contentContainerId).html(data);
            }
        });
    }

    /**
     * 获取hash值
     * @returns {string}
     */
    var getHash = function() {
        return location.hash.replace("#", "");
    }

    /**
     * 根据请求的串改变hash值
     * @param urlStr 请求的url串
     */
    var changeHash = function(urlStr) {
        if (urlStr == null) return;
        location.hash = "#" + urlStr;
    }

    /**
     * 根据hash值获取请求的URL
     * @param hash
     * @returns {*}
     */
    var getUrlByHash = function(hash) {
        if (hash.indexOf("?") == -1)
            return hash;
        return hash.substring(0, hash.indexOf("?"));
    }

    /**
     * 根据hash值获取参数
     * @param hash
     * @returns {string}
     */
    var getParamsByHash = function(hash) {
        if (hash.indexOf("?") == -1)
            return "";
        return hash.substring(hash.indexOf("?") + 1, hash.length);
    }

    window.route = route;

}(jQuery));